// #include <stdio.h>
// #include <stdlib.h>
// #include <windows.h>
// #include <assert.h>
//
// typedef struct SqList {
//     int* data;
//     int length;
//     int maxsize;
// }SqList;
//
// void InitSQ(SqList* L) {
//     L->data=NULL;
//     L->length=L->maxsize=0;
// }
//
// void Full(SqList* L) {
//     if(L->length==L->maxsize) {
//         int NewLength=L->length==0?4:2*L->maxsize;
//         int* tmp=(int*)realloc(L->data,sizeof(int)*NewLength);
//         if(tmp==NULL) {
//             exit(1);
//         }
//         L->data=tmp;
//         L->maxsize=NewLength;
//     }
// }
//
// void InsertBack(SqList* L, int elem) {
//     if (L == NULL) return;
//     Full(L);
//     L->data[L->length] = elem;
//     L->length++;
// }
//
// void Print(SqList* L) {
//     for(int i=0;i<L->length;i++) {
//         printf("%d ",L->data[i]);
//     }
//     printf("\n");
// }
//
// void Destroy(SqList* L) {
//     if(L == NULL) return;
//     free(L->data);
//     L->data = NULL;
//     L->length = L->maxsize = 0;
// }
//
// SqList SqListMerge(SqList* L1,SqList* L2) {
//     assert(L1&&L2);
//     assert(L1->data&&L2->data);
//     SqList L3;
//     InitSQ(&L3);
//     L3.maxsize = L1->length + L2->length;
//     L3.data = (int*)malloc(sizeof(int) * L3.maxsize);
//     if (L3.data == NULL) {
//         perror("内存分配失败");
//         exit(EXIT_FAILURE);
//     }
//     int i=0;int j=0;int k=0;
//     while (i<L1->length&&j<L2->length) {
//        if(L1->data[i]<L2->data[j]) {
//            L3.data[k]=L1->data[i];
//            i++;
//            k++;
//        }else {
//            L3.data[k]=L2->data[j];
//            j++;
//            k++;
//        }
//     }
//
//     while (i<L1->length) {
//         L3.data[k++]=L1->data[i++];
//     }
//     while (j<L2->length) {
//         L3.data[k++]=L2->data[j++];
//     }
//     L3.length=k;
//     return L3;
// }
//
// int main() {
//     SetConsoleOutputCP(CP_UTF8);
//     SqList L1;
//     SqList L2;
//     InitSQ(&L1);
//     InitSQ(&L2);
//
//     InsertBack(&L1,1);
//     InsertBack(&L1,3);
//     InsertBack(&L1,4);
//     InsertBack(&L1,7);
//     InsertBack(&L1,9);
//
//     InsertBack(&L2,2);
//     InsertBack(&L2,5);
//     InsertBack(&L2,6);
//     InsertBack(&L2,10);
//     InsertBack(&L2,12);
//
//     Print(&L1);
//     Print(&L2);
//
//     SqList L3=SqListMerge(&L1,&L2);
//
//     printf("合并后:");
//     Print(&L3);
//
//     Destroy(&L1);
//     Destroy(&L2);
//     return 0;
// }